package com.gtlab1207.br_awareness.common;

import java.io.*;
import java.net.InetAddress;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.gtlab1207.br_awareness.models.domain.LogRecord;
import org.apache.commons.io.FileUtils;

import static com.gtlab1207.br_awareness.common.Constant.SYSTEM_LOG;

public class FileUtil {

//    public static void main(String[] args) throws IOException, ParseException {
//        //文件存放的路径
//        String filePath = "C:\\Users\\AceSpring\\Desktop\\catalina.out";
//        List<String> result = FileUtils.readLines(new File(filePath));
//
//        List<LogRecord> recordList = new ArrayList<>();
//        LogRecord tempLogRecord = new LogRecord();
//        tempLogRecord.setType(SYSTEM_LOG);
//        String sip = InetAddress.getLocalHost().getHostAddress();
//        tempLogRecord.setSip(sip);
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
//        if (result.size() > 0) {
//            //遍历解析出来的内容
//            for (String line : result) {
//                //用正则截取出时间字段
//                String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
//                Pattern p = Pattern.compile(regex);
//                Matcher matcher = p.matcher(line);
//                if (matcher.find()) {
//                    String timeStr = matcher.group(0);
//                    tempLogRecord.setTime(sdf.parse(timeStr));
//                    System.out.println("时间:" + timeStr);
//                }
//                //截取异常原因
//                String strStart = "Caused by:";
//                // 找出指定字符串在该字符串里面的位置
//                int strStartIndex = line.indexOf(strStart);
//                //判断是否有指定的内容
//                if (strStartIndex >= 0) {
//                    // 开始截取
//                    String event = line.substring(strStartIndex).substring(strStart.length());
//                    if(tempLogRecord.getTime()!=null && tempLogRecord.getEvent()==null) {
//                        tempLogRecord.setEvent(event);
//                        System.out.println("截取的异常原因：" + event);
//                    }
//                }
//
//                if(tempLogRecord.getTime()!=null && tempLogRecord.getEvent()!=null) {
//                    recordList.add(tempLogRecord);
//                    System.out.println("截取后的提取的数据=====" + tempLogRecord);
//                    tempLogRecord = new LogRecord();
//                    tempLogRecord.setType(SYSTEM_LOG);
//                    tempLogRecord.setSip(sip);
//                }
//            }
//            System.out.println("数组/" + recordList);
//        }
//
//    }

    /**
     * 使用正则表达式提取中括号中的内容
     *
     * @param msg
     * @return
     */
    public static List<String> extractMessageByRegular(String msg) {

        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile("(\\[[^\\]]*\\])");
        Matcher m = p.matcher(msg);
        while (m.find()) {
            list.add(m.group().substring(1, m.group().length() - 1));
        }
        return list;

    }

}